OpenCV实践之路 您所在的位置:网站首页 imread -1 OpenCV实践之路

OpenCV实践之路

#OpenCV实践之路| 来源: 网络整理| 查看: 265

本文由@星沉阁冰不语出品,转载请注明作者和出处。

文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/51375078

微博:http://weibo.com/xingchenbing 

 

 

引用@星沉阁冰不语 中有关如何使用imread()读取图像地址的六种方法。

然而这样得到的路径直接复制粘贴到vs里面会直接报错,如下:

可以看出我们获取的绝对路径的表示方法是单右斜线形式的。显然opencv的imread()不支持这种方式。但是!!!经过实验发现imread()除了不支持单右斜线形式,其他斜线形式都支持!!!比如双右斜线形式、双左斜线形式、单左斜线形式、前述三种斜线混合型式都是支持的!!我想知道为什么??

看图,下面的六种方式任何一种都是支持的,都可以成功读取并显示图片。

我个人经常用的方法是第5种,相对路径法。只需要把图像文件放在工程文件夹下和.cpp文件放在一起就行了,读取的时候就可以直接用名字读取,如imread("miao.jpg");

最后一种命令行参数法是源码中比较常见的。设置方法是:

工程——属性——配置属性——调试——命令行参数,然后设置就行了。如图:

设置之后miao.jpg就是argv[1],2.jpg就是argv[2]。

这次的完整代码如下(路径因人而异的):

[cpp]  view plain  copy #include      using namespace cv;      int main(int argc,char* argv[])   {       Mat img;          //-- 1 --双右斜线法       //string imgpath = "C:\\Users\\bingbuyu\\Pictures\\photo\\miao1.jpg";       //-- 2 --双左斜线法       //string imgpath = "C://Users//bingbuyu//Pictures//photo//miao1.jpg";       //-- 3 --单左斜线法       //string imgpath = "C:/Users/bingbuyu/Pictures/photo/miao1.jpg";       //-- 4 --以上三种混合法       //string imgpath = "C:/Users//bingbuyu\\Pictures//photo//miao1.jpg";       //-- 5 --相对路径法       //string imgpath = "miao.jpg";       //-- 6 --命令行参数法       string imgpath = argv[1];          img = imread(imgpath, 1);       imshow("img", img);          waitKey(0);       return 0;   }  

以上六种的运行结果,还是这只喵:

      imread()函数中的第二个参数为flag

flags = -1:imread按解码得到的方式读入图像

flags = 0:imread按单通道的方式读入图像,即灰白图像

flags = 1:imread按三通道方式读入图像,即彩色图像



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有